Skip to content

高频错误自检清单(提交前 15~60 秒)

目标:用最短时间排除最常见 WA/TLE。

1) 读题与约束

  • [ ] 我写下了 n、值域、时间限制,以及预期复杂度(例如 O(nlogn)
  • [ ] 多组数据?是否需要清空数组/容器?
  • [ ] 输入是 1-index 还是 0-index?输出是否需要按原顺序?

2) 边界与数据类型

  • [ ] 是否有空集/单点/全相等/全为 0/全为负数等极端情况?
  • [ ] int 是否会溢出?(乘法、前缀和、最短路 dist)
  • [ ] INF 是否足够大?是否可能 INF + w 溢出?

3) 算法前提条件

  • [ ] 二分:单调性是否真的成立?mid 更新是否会死循环?
  • [ ] Dijkstra:边权非负?
  • [ ] 贪心:我能说出交换论证/反证的核心一句话吗?
  • [ ] DP:状态是否覆盖所有情况?转移是否重复计数?

4) 实现与性能

  • [ ] 循环边界:<= / < 是否正确?
  • [ ] 排序比较函数是否严格弱序?
  • [ ] 使用 vector 时是否预留容量?是否有 O(n2) 的隐藏行为?
  • [ ] 哈希/集合:是否需要 reserve 降低常数(可选)

5) 最小化验证(能做就做)

  • [ ] 手算一个最小反例(例如 1、2、3 个元素)
  • [ ] 手算一个最大/极端反例
  • [ ] 若实现复杂:写一个小的随机对拍(见 contest-skills 的对拍课)